package com.dingreading.cloud.subject.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mybatisflex.annotation.RelationOneToMany;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 课次
 */
@Data
public class CourseSearchDto implements Serializable {

    private Long id;

    /**
     * 添加时间
     */
    private Date addTime;

    private Date editTime;

    /**
     * 课程名
     */
    @ApiModelProperty(value = "课程名")
    private String name;

    /**
     * 介绍
     */
    @ApiModelProperty(value = "介绍")
    private String intro;

    /**
     * 主分类id
     */
    @ApiModelProperty(value = "主分类id")
    @JsonIgnore
    private Long mainTypeId;

    /**
     * 主分类名
     */
    @ApiModelProperty(value = "主分类名")
    private String mainTypeName;

    /**
     * 分类id
     */
    @ApiModelProperty(value = "分类id")
    @JsonIgnore
    private Long typeId;

    /**
     * 分类名称
     */
    @ApiModelProperty(value = "分类名称")
    private String typeName;

    /**
     * 是否热门
     * 1.是 0.不是
     */
    @ApiModelProperty(value = "是否热门 1.是 0.不是")
    private Integer hotStatus;

    /**
     * 是否免费 0.不 1.免费
     */
    @ApiModelProperty(value = "是否免费 0.不 1.免费")
    private Integer freeStatus;

    /**
     * 序号
     */
    @ApiModelProperty(value = "序号")
    private Integer orderNum;

    /**
     * 状态 1.启用 0.禁用
     */
    @ApiModelProperty(value = "禁用状态 1.启用 0.禁用")
    private Integer enabled;

    /**
     * 合作类型
     * 100：叮叮书房的加盟账号可以看；50：叮叮好读的加盟账号可以看
     */
    @ApiModelProperty(value = "合作类型")
    @JsonIgnore
    private String cooperationType;

    /**
     * 运营类型
     * 100：自营账号可以看；50：加盟账号可以看
     */
    @ApiModelProperty(value = "运营类型")
    @JsonIgnore
    private String operationType;

    /**
     * 角色类型
     * 20：导读；21：顾问；50：店长
     */
    @ApiModelProperty(value = "角色类型")
    @JsonIgnore
    private String role;

    /**
     * 资料下载地址
     */
    @ApiModelProperty(value = "资料下载地址")
    private String url;

    /**
     * 下载次数
     */
    @ApiModelProperty(value = "下载次数")
    private Integer downloadNum;

    /**
     * 分类 1.课程视频 2.下载资料
     */
    @ApiModelProperty(value = "分类")
    private Integer type;

    @RelationOneToMany(
            selfField = "id",
            targetTable = "course_video",
            targetField = "courseId"
    )
    private List<CourseVideoDto> courseVideoList;

}
